﻿using System;
using PropertyExpression.Common;

namespace ConsoleApplication1
{
    public class Program
    {
        private static void Main()
        {
            ImplChecker.Check(typeof (Program).Assembly);
            //SomeMethod().a3.a5(2);
        }

        T002 SomeMethod()
        {
            return new {
                a1 = "test1",
                a2 = 54,
                a3 = new {
                    a4 = "test2",
                    a05 = Func.New((int arg) => {
                        Console.WriteLine(arg);
                        return arg + 1;
                    })
                }.Impl()._<T001>()
            }.Impl()._<T002>();
        }
    }

    public partial interface T002
    {
        string a1 { get; }
        int a2 { get; }
        ConsoleApplication1.T001 a3 { get; }
    }

    public partial interface T001
    {
        string a4 { get; }
        System.Func<int, int> a5 { get; }
    }
}
